package objectos;

/**
 * @author igo
 * Classe Treinador
 */
public class Treinador extends Objecto{

    private String Nome = "";
    private String I = "";
    private TipoObjecto Tipo = TipoObjecto.TREINADOR;
    private int ataque = 2;
    private int vida = 250;
    private int range = 5;
    private int velocidade = 10;
    private boolean vivo = true;
    
    /**
     * Constructor do Treinador
     * @param I - Recebe o Nick do Jogador que represeta no mapa.
     * @param Nome - Recebe o nome que o irá associar a uma imagem.
     */
    public Treinador(String I, String Nome){
        this.I = I;
        this.Nome = Nome;
    }
    
    /**
     * 
     * @return Retorna o estado do Treinador, true se estiver vivo e em jogo ou false caso já tenha perdido o jogo.
     */
    public boolean estaVivo(){
        return vivo;
    }
    
    /**
     * Método que 'mata' o Treinador
     */
    public void Morreu(){
        vivo = false;
        vida = 0;
    }
    
    /**
     * 
     * @return Retorna o dano que o Treinador causa ao atacar.
     */
    public int getAtaque(){
        return ataque;
    }
    
    /**
     * 
     * @return Retorna a vida que o Treinador tem.
     */
    public synchronized int getVida(){
        return vida;
    }
    
    /**
     * Método que altera a vida do Treinador consoante o valor com o qual é atacado.
     * @param x - Recebe um numero inteiro que irá ser o dano sofrido.
     */
    public synchronized void Sofre(int x){
        this.vida-=x;
    }
    
    /**
     * 
     * @return Retorna o Range do Treinador
     */
    public int getRange(){
        return range;
    }
    
    /**
     * 
     * @return Retorna a Velocidade a que o Treinador se mexe
     */
    public int getVelocidade(){
        return velocidade;
    }
        
    /**
     * 
     * @return Retorna o Nick do Jogador que é representado pelo Treinador
     */
    public String getInfo(){
        return I;
    }
    
    @Override
    public String getNome() {
        return Nome;
    }

    @Override
    public TipoObjecto getTipo() {
        return Tipo;
    }
}